import UnoCSS from 'unocss/vite'
import { fileURLToPath, URL } from 'node:url'

// Vite 配置函数
import { ConfigEnv, defineConfig, loadEnv, UserConfig, UserConfigFn } from 'vite'
// Vue 3 官方插件，提供 Vue 单文件组件支持
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
// Vue 开发者工具增强插件，提供更好的调试体验
import vueDevTools from 'vite-plugin-vue-devtools'
// API 自动导入插件，减少手动 import 语句
import AutoImport from 'unplugin-auto-import/vite'
// 组件自动按需导入插件
import Components from 'unplugin-vue-components/vite'
// Naive UI 组件自动按需导入插件
import { NaiveUiResolver } from 'unplugin-vue-components/resolvers'
// 图标自动按需导入插件
import Icons from 'unplugin-icons/vite'
// 图标自动按需导入插件的解析器
import IconsResolver from 'unplugin-icons/resolver'
// 代码分析插件
import { visualizer } from 'rollup-plugin-visualizer'
// 代码压缩插件
import viteCompression from 'vite-plugin-compression'
// 路由自动按需导入插件
import Pages from 'vite-plugin-pages'
// 路由布局自动按需导入插件
import Layouts from 'vite-plugin-vue-layouts'
// 代码调试插件
import Inspector from 'vite-plugin-vue-inspector'

// https://vite.dev/config/
export default defineConfig(({command,mode}: ConfigEnv): UserConfig => {
  // const config = loadEnv(mode,false)
  const env = loadEnv(mode, process.cwd(), "VITE_")
  return {
    server: {
      host: env.VITE_HOST,
      port: Number(env.VITE_PORT),
    },
    plugins: [
      vue(),
      vueJsx(),
      vueDevTools(),
      Inspector({
        launchEditor: 'D:\\programs\\WebStorm 2024.3.4\\bin\\webstorm64.exe',
        // toggleButtonVisibility: 'always',    // 总是显示切换按钮
        // toggleComboKey: 'control-shift',     // 使用 ctrl+shift+点击 来定位元素
        // appendTo: 'body',                    // 将开关按钮添加到 body 元素
      }),
      UnoCSS(),
      AutoImport({
        imports: [
          'vue',
          'vue-router',
          'pinia',
          {
            'naive-ui': [
              'useDialog',
              'useMessage',
              'useNotification',
              'useLoadingBar',
              'darkTheme',
              'NIcon',
            ]
          },
        ],
        dts: 'src/auto-imports.d.ts',
      }),
      Components({
        resolvers: [
          NaiveUiResolver(),
          IconsResolver({
            prefix: 'Icon',
          }),
        ],
        dts: 'src/components.d.ts',
      }),
      Icons({
        autoInstall: true,
      }),
      Pages(),
      Layouts(),
      viteCompression(),
      visualizer({
        open: false,
        gzipSize: true,
        brotliSize: true,
      }),
    ],
    resolve: {
      alias: {
        '@': fileURLToPath(new URL('./src', import.meta.url))
      },
    },
  }
})
/*
export default defineConfig({
  plugins: [
    vue(),
    vueJsx(),
    vueDevTools(),
    Inspector({
      launchEditor: 'D:\\programs\\WebStorm 2024.3.4\\bin\\webstorm64.exe',
      // toggleButtonVisibility: 'always',    // 总是显示切换按钮
      // toggleComboKey: 'control-shift',     // 使用 ctrl+shift+点击 来定位元素
      // appendTo: 'body',                    // 将开关按钮添加到 body 元素
    }),
    UnoCSS(),
    AutoImport({
      imports: [
        'vue',
        'vue-router',
        'pinia',
        {
          'naive-ui': [
           'useDialog',
            'useMessage',
            'useNotification',
            'useLoadingBar',
            'darkTheme',
            'NIcon',
          ]
        },
      ],
      dts: 'src/auto-imports.d.ts',
    }),
    Components({
      resolvers: [
        NaiveUiResolver(),
        IconsResolver({
          prefix: 'Icon',
        }),
      ],
      dts: 'src/components.d.ts',
    }),
    Icons({
      autoInstall: true,
    }),
    Pages(),
    Layouts(),
    viteCompression(),
    visualizer({
      open: false,
      gzipSize: true,
      brotliSize: true,
    }),
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    },
  },
})*/
